Notice List >> 1742题目已经加SPJ并ReJudge

1742题目已经加SPJ并ReJudge

Start time: 2016-08-24 11:29:00 End time: 2016-09-01 00:00:00
Publisher: w703710691d View: 1345
#include<bits/stdc++.h>
using namespace std;
const int WA = 2;
const int AC = 0;
const int maxn = 10005;
FILE *f_in, *f_out, *f_user;
void EXIT(int STATUS)
{
 fclose(f_in);
 fclose(f_out);
 fclose(f_user);
 exit(STATUS);
}
char buf[maxn];
int main(int argc, char **args)
{
 f_in = fopen(args[1], "r");
 f_out = fopen(args[2], "r");
 f_user = fopen(args[3], "r");
 //f_in = fopen("f_in.txt", "r");
 //f_out = fopen("f_out.txt", "r");
 //f_user = fopen("f_user.txt", "r");
 int len;
 fgets(buf, maxn, f_out);
 len = strlen(buf);
 while(len > 0 && buf[len-1] == '\r' || buf[len-1] == '\n') buf[--len] = 0;
 if(strcmp(buf, "No Solution!") == 0)
 {
  fgets(buf, maxn, f_user);
  len = strlen(buf);
  while(len > 0 && buf[len-1] == '\r' || buf[len-1] == '\n') buf[--len] = 0;
  if(strcmp(buf, "No Solution!") == 0)
  {
   int tmp;
   if(fscanf(f_user, "%d", &tmp) == EOF) EXIT(AC);
   else EXIT(WA);
  }
  else EXIT(WA);
 }
 set<int> st[20];
 int need[20];
 int k, n;
 fscanf(f_in, "%d %d", &k, &n);
 for(int i = 1; i <= k; i++) fscanf(f_in, "%d", &need[i]);
 for(int i = 1; i <= n; i++)
 {
  int num;
  fscanf(f_in, "%d", &num);
  while(num--)
  {
   int type;
   fscanf(f_in, "%d", &type);
   st[type].insert(i);
  }
 }
 bool f[20];
 memset(f, 0, sizeof(f));
 for(int i = 1; i <= k; i++)
 {
  set<int> done;
  int idx;
  if(fscanf(f_user, "%d:", &idx) != 1) EXIT(WA);
  if(f[idx]) EXIT(WA);
  f[idx] = 1;
  for(int j = 1; j <= need[idx]; j++)
  {
   int id;
   if(fscanf(f_user, "%d", &id) != 1) EXIT(WA);
   if(st[idx].find(id) == st[idx].end()) EXIT(WA);
   if(done.find(id) != done.end()) EXIT(WA);
   done.insert(id);
  }
 }
 int tmp;
 if(fscanf(f_user, "%d", &tmp) == EOF)
  EXIT(AC);
 else EXIT(WA);
 return 0;
}