Submission #1258590

#TimeUsernameProblemLanguageResultExecution timeMemory
1258590phtungModsum (NOI12_modsum)C++20
25 / 25
198 ms6552 KiB
#include <bits/stdc++.h>

using namespace std;

#define name "IO"
#define int long long 

const int mod = 5;
const int inf = 1e18 + 7; 
const int maxn = 1005; 
int n;

int Pow(int x, int y) 
{
    int ans = 1;
    while (y > 0) 
    {
        if (y & 1) ans = (ans * x) % mod;
        y /= 2;
        x = x * x;
        x %= mod;
    }
    return ans;
}

bool cmp(pair<int,int>a, pair<int,int>b)
{
    return a.second > b.second; 
}

void solve()
{
    int n;
    cin >> n;

    vector<pair<int,int>> a; 

    for(int i = 1; i <= n; i++)
    {
        int v, w;
        cin >> v >> w;
        a.push_back({v, w}); 
    }

    vector<pair<int,int>> v;  

    v.push_back({0, 0}); 

    for(int i = 0; i < n; i++)
    {
        int sz = v.size(); 
        vector<pair<int, int>> new_v; 
        for(int j = 0; j < sz; j++)
        {
            auto [val, cnt] = v[j];
            auto [l, r] = a[i]; 
        
            for(int k = l; k <= r; k++)
            {
                new_v.push_back({val + k, cnt + 1}); 
            }
        }

        v.clear(); 
        v = new_v; 
    }

    map<int, int> mp; 

    for(int i = 0; i < v.size(); i++)
    {
        auto [val, cnt] = v[i]; 
        mp[val]++; 
    }

    int res = 0;

    for(auto [val, cnt] : mp)
    {
        int sqr = (val % 5) * (val % 5) % 5; 
        int x = ((sqr * (sqr + 2)) % 5) + 1; 
        x *= cnt; 
        res += x; 
    }

    cout << res << "\n";

}

signed main()
{
    if (fopen (name".INP", "r"))
    {
        freopen (name".INP", "r", stdin);
        freopen (name".OUT", "w", stdout);
    }

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    clock_t start = clock(); 

    int t = 1;

    while(t--) solve(); 

    std::cerr << "Time: " << clock() - start << "ms\n";

    return 0; 

}

Compilation message (stderr)

modsum.cpp: In function 'int main()':
modsum.cpp:94:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   94 |         freopen (name".INP", "r", stdin);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
modsum.cpp:95:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   95 |         freopen (name".OUT", "w", stdout);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...