Submission #3550807


Source Code Expand

#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  for(int i=0;i<(n);++i)
#define REPr(i,n) for(int i=(n)-1;i>=0; --i)
#define FORq(i, m, n) for(int i = (m);i <= (n);++i)
#define rFORq(i, m , n) for(int i = (n);i >=(m);--i)
#define SCD(n) scanf("%d",&n)
#define SCD2(m,n) scanf("%d%d",&m,&n)
#define SCD3(m,n,k) scanf("%d%d%d",&m,&n,&k)
#define SCLLD(n) scanf("%lld",&n)
#define SCLLD2(m,n) scanf("%lld%lld",&m,&n)
#define SCLLD3(m,n,k) scanf("%lld%lld%lld",&m,&n,&k)
#define PB push_back
#define MP make_pair
#define ARSCD(A,N) REP(i,N){SCD(A[i]);}
#define ARSCD1(A,N) FORq(i,1,N){SCD(A[i]);}
#define VSCD(v,N) REP(i,N){int x; SCD(x); v.PB(x);}
#define VSCLLD(v,N) REP(i,N){long long x; SCLLD(x); v.PB(x);}
#define PRINTD(n) printf("%d\n",n)
#define PRINTLLD(n) printf("%lld\n",n)
#define DEBUG printf("%s\n","debug")
#define fst first
#define snd second
#define SIN(x,S) (S.count(x) != 0)
using namespace std;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef vector < VI > VVI;
typedef vector<long long> VL;
typedef long long ll;
typedef long long integer;
////////////////////////////////////////////////////////////////////
const ll p = 1000000007;
ll dx[4] = {-7,-1,1,7};

int main(){
    ll N,M,Q; SCLLD3(N,M,Q);
    //static ll a[100002] = {};
    static bool grid[100002] = {}; // partial
    static bool visited[100002] = {};
    static bool visited2[200002] = {};
    //static bool visited[100002] = {};
    //ARSCD(a,Q);

    REP(q,Q){
        ll ai;
        SCLLD(ai);
        ll k = 0;
        while(k*M + ai < M){
            grid[k*M+ai] = true;
            k++;
        }
    }

/*     FORq(i,0,2*M-1){
        if (i % 7 == 0) printf("\n");
        if (grid[i]) printf("%d",1);
        else printf("%d",0);
    }
    printf("\n"); */

    ll count1 = 0;
    ll count2 = 0;
    queue<ll> que;

    // #1
    FORq(i,0,M-1){
        if (grid[i]) continue;
        if (visited[i]) continue;
        que.push(i);
        //printf("start = %d\n",i);
        while(!que.empty()){
            ll now = que.front(); que.pop();
            visited[now] = true;
            
            REP(k,4){
                ll next = now + dx[k];
                if ((now % 7 == 0) and (k == 1)) continue;
                if (next < 0) continue;
                if (next >= M) continue;
                if ((now % 7 == 6) and (k == 2)) continue;
                if (grid[next]) continue;
                if (visited[next]) continue;
                //printf("next -> %lld\n",next);
                que.push(next);
            }
        }
        //printf("count+\n");
        count1++;
    }

    //printf("count1 = %lld\n",count1);

    // #2
    FORq(i,0,2*M-1){
        if (grid[i % M]) continue;
        if (visited2[i]) continue;
        que.push(i);
        //printf("start = %d\n",i);
        while(!que.empty()){
            ll now = que.front(); que.pop();
            visited2[now] = true;
            
            REP(k,4){
                ll next = now + dx[k];
                if ((now % 7 == 0) and (k == 1)) continue;
                if (next < 0) continue;
                if (next >= 2*M) continue;
                if ((now % 7 == 6) and (k == 2)) continue;
                if (grid[next % M]) continue;
                if (visited2[next]) continue;
                //printf("next -> %lld\n",next);
                que.push(next);
            }
        }
        //printf("count+\n");
        count2++;
    }
    
    //printf("count2 = %lld\n",count2);

    ll A,B;
    A = count2 - count1;
    B = count1 - A;
    ll c = 7*N / M;
    PRINTLLD(A*c + B);
}

Submission Info

Submission Time
Task C - Calendar 2
User Lithium
Language C++14 (GCC 5.4.1)
Score 90
Code Size 3739 Byte
Status WA
Exec Time 1064 ms
Memory 123208 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:37:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     ll N,M,Q; SCLLD3(N,M,Q);
                            ^
./Main.cpp:47:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         SCLLD(ai);
                  ^

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 0 / 0 0 / 100 90 / 90 0 / 200 0 / 110
Status
AC × 2
AC × 5
WA × 1
TLE × 1
AC × 1
AC × 1
TLE × 2
AC × 6
WA × 1
TLE × 5
Set Name Test Cases
Sample sub0_in1.txt, sub0_in2.txt
Subtask1 sub0_in1.txt, sub0_in2.txt, sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub1_in4.txt, sub1_in5.txt
Subtask2 sub2_in1.txt
Subtask3 sub2_in1.txt, sub3_in1.txt, sub3_in2.txt
Subtask4 sub0_in1.txt, sub0_in2.txt, sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub1_in4.txt, sub1_in5.txt, sub2_in1.txt, sub3_in1.txt, sub3_in2.txt, sub4_in1.txt, sub4_in2.txt
Case Name Status Exec Time Memory
sub0_in1.txt AC 1 ms 256 KB
sub0_in2.txt AC 1 ms 256 KB
sub1_in1.txt AC 1 ms 256 KB
sub1_in2.txt AC 1 ms 256 KB
sub1_in3.txt AC 1 ms 256 KB
sub1_in4.txt WA 1 ms 256 KB
sub1_in5.txt TLE 1057 ms 66168 KB
sub2_in1.txt AC 11 ms 384 KB
sub3_in1.txt TLE 1064 ms 123208 KB
sub3_in2.txt TLE 1059 ms 48056 KB
sub4_in1.txt TLE 1063 ms 115584 KB
sub4_in2.txt TLE 1058 ms 40344 KB