夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

精進三問

全部貪欲の簡単問題なのでコードのみ。
実装ミスとかのタイムロスを減らしていきたい。

1218

#include <cstdio>
#include <vector>
using namespace std;
int main() {
  int t; scanf("%d",&t);
  for (int ix=0; ix<t; ix++) {
    int n; scanf("%d",&n);
    vector<bool> jail(n,true);
    for (int i=2; i<=n; i++) {
      for (int j=i-1; j<n; j+=i) {
	jail[j]=!jail[j];
      }
    }
    int res=0;
    for (int i=0; i<n; i++) if (jail[i]) res++;
    printf("%d\n",res);
  }
}

1247

#include <cstdio>
#include <vector>
using namespace std;

int main() 
{
  int n;
  while (scanf("%d",&n)&&n!=0) 
    {
      vector<int> in(n);
      int sum=0;
      for (int i=0; i<n; i++) 
	{
	scanf("%d",&in[i]);
	sum+=in[i];
	}
      int i;
      for (i=1; i<=n; i++) 
	{
	  int rsum=0;
	  for (int j=0; j<i; j++) rsum+=in[j];
	  if (rsum==sum-rsum) break;
	}
      if (i==n+1) 
	{
	  printf("No equal partitioning.\n");
	}
      else 
	{
	  printf("Sam stops at position %d and Ella stops at position %d.\n",i,i+1);
	}    
    }
}

1298

#include <iostream>
#include <string>
#include <cmath>
#include <cstring>
using namespace std;
int main() 
{
  string tmp;
  while (getline(cin,tmp)) 
    {
      if (tmp=="START"||tmp=="END") continue;
      if (tmp=="ENDOFINPUT") break;
      for (int i=0; i<tmp.length(); i++) 
	{
	  if (isalpha(tmp[i]))
	    {
	      tmp[i]+='V'-'A';
	      if (tmp[i]>'Z') tmp[i]-=26;
	    }
	}
      cout<<tmp<<endl;
    }
}