Submission #1147471

#TimeUsernameProblemLanguageResultExecution timeMemory
1147471modwweFountain (eJOI20_fountain)C++17
0 / 100
0 ms324 KiB
/**
tst 2024 problem 1
*/
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
#define int   long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task2 "ftree"
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define mask(k) (1<<k)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l,int r)
{
    return uniform_int_distribution<int>(l,r)(rd);
}
void phongbeo();
const int inf = 1e16;
const ll mod2 = 1e9+7;
const ll base=67;
int  n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
int  i, s10, s12,k1,k2,k3,s11,lim,w,l,r ;
int kk;
int t;
int el = 19;
main()
{
    if(fopen(task2".inp","r"))
    {
        fin(task2);
        fou(task2);
    }
    if(fopen(task".inp","r"))
    {
        fin(task);
        fou(task);
    }
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    /// cin>>s1;
//int t;cin>>t; while(t--)
    phongbeo();
    // checktime
}
int a[200];
int mouse[200];
bool c[200];
int day[200];
void mouse_move()
{
    for(int i=2; i<n; i++)
    {
        if(c[i]) continue;
        int x=rand(0,1);
        if(x==0) x=-1;
        a[i+x]+=mouse[i];
    }
    if(!c[1])
        a[2]+=mouse[1];
    if(!c[n])
        a[n-1]+=mouse[n];
    for(int i=1; i<=n; i++)
    {
        if(c[i])
        {
            mouse[i]+=a[i],a[i]=0;
            continue;
        }
        mouse[i]=a[i],a[i]=0;
    }
}
void pick(int x)
{
    s4=mouse[x];
    if(c[x])s4=0;
    if(s4!=0)mouse[x]=0;
    mouse_move();
    return;
}
void check(vector<int>& v)
{
    day[dem+1]=0;
    for(auto x:v)
        if(mouse[x]>0)
        {
            day[dem+1]=1;
            return;
        }
}
pair<int,int> receive()
{
    dem++;
    int ans=-1;
    int s44=s4;
    if(dem>n)ans=day[dem-n];
    s4=0;
    return {s44,ans};
}
int solve(int n,int m,int t)
{
    int total_mouse=0;
    for(int i=2; i<n; i++)
    {
        pick(i);
        pair<int,int> rec=receive();
        total_mouse+=rec.first;
    }
    int start;
    if(n%2==1)  start=2;
    else start=1;
    for(int i=start; i<n; i++)
    {
        pick(i);
        pair<int,int> rec=receive();
        total_mouse+=rec.first;
    }
    if(total_mouse==m)return -1;
    for(int i=0; i<6; i++)
    {
        vector<int> v;
        for(int j=1; j<=n; j++)
            if(bit(j,i))v.pb(j);
        check(v);
        pair<int,int> rec=receive();
    }
    int tim=0;
    for(int i=1; i<=n; i++)
    {
        pair<int,int> rec=receive();
        if(rec.second!=-1)
        {
            tim+=rec.second*mask(dem2);
            dem2++;
        }
    }
    return tim;
}
void phongbeo()
{
    cin>>n>>m>>t;
    for(int i=1; i<=m; i++)
    {
        int x=rand(1,n);
        mouse[x]++;
    }
    memset(day,-1,sizeof day);
    c[rand(1,n)]=1;
    int x=solve(n,m,t);
    cout<<dem,down
        if(x==-1)
    {
        for(int i=1; i<=n; i++)
            if(mouse[i]!=0) assert(0);
    }
    else if(!c[x])assert(0);
}

Compilation message (stderr)

fountain.cpp:36:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   36 | main()
      | ^~~~
fountain.cpp: In function 'int main()':
fountain.cpp:15:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 | #define fin(x) freopen(x".inp","r",stdin)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~
fountain.cpp:40:9: note: in expansion of macro 'fin'
   40 |         fin(task2);
      |         ^~~
fountain.cpp:16:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 | #define fou(x) freopen(x".out","w",stdout)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~~
fountain.cpp:41:9: note: in expansion of macro 'fou'
   41 |         fou(task2);
      |         ^~~
fountain.cpp:15:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 | #define fin(x) freopen(x".inp","r",stdin)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~
fountain.cpp:45:9: note: in expansion of macro 'fin'
   45 |         fin(task);
      |         ^~~
fountain.cpp:16:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 | #define fou(x) freopen(x".out","w",stdout)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~~
fountain.cpp:46:9: note: in expansion of macro 'fou'
   46 |         fou(task);
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...